package com.demo.common.ratelimit.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 分布式锁
 *
 * @author DayDayUp
 * create on 2023-08-24
 **/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface DistributeLock {
    /**
     * 分布式锁key后缀
     */
    String suffixKey() default "";

    /**
     * 分布式锁key过期时间
     */
    long expireTime() default 50;
    /**
     * 获取锁的最大等待时间
     */
    long waitTime() default 0;
    /**
     * 时间单位
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 释放在方法执行完成之后释放锁
     */
    boolean release() default true;

}
